console.log('14BaseRender');
let utils = data["utils"];
let RBushItem = data["RBushItem"];
let RBU = data["RBU"];
let RBush = data["RBush"];
let AreaForRender = data["AreaForRender"];
let quickselect = data["quickselect"];
let SphericalMercator = data["SphericalMercator"];
let PointItem = data["PointItem"];
let PointForRender = data["PointForRender"];
let BoundsItem = data["BoundsItem"];
let QuadTree = data["QuadTree"];
let Node = data["Node"];
let PointSimplifier = data["PointSimplifier"];
let BaseRender = data["BaseRender"];
let LeftNumFunnel = data["LeftNumFunnel"];

var boundsIntersect = BoundsItem.boundsIntersect, boundsContain = BoundsItem.boundsContain; utils.extend(BaseRender.prototype, { _renderAreas: function (tag, sureInViewAreas, notSureInViewAreas) { var areas = sureInViewAreas, renderFunc; utils.merge(areas, notSureInViewAreas), notSureInViewAreas.length = 0, areas.length && (this["render" + tag].call(this, this._currentZoom, areas), areas.length = 0) }, _callNormalPointsRender: function (sureInViewPoints, notSureInViewPoints, viewBounds, scaleFactor) { var args = [sureInViewPoints, notSureInViewPoints, viewBounds, scaleFactor]; args.unshift("NormalPoints"), this._renderPoints.apply(this, args) }, _filterPointsForRender: function (list) { var pointSize = this.getPointSize(), width = pointSize.width, height = pointSize.height, pointOffset = this.getPointOffset(pointSize), pointHardcoreSize = this.getPointHardcoreSize(), hardcoreWidth = pointHardcoreSize.width, hardcoreHeight = pointHardcoreSize.height, pointHardcoreOffset = this.getHardcoreOffset(pointHardcoreSize), leftPoints = [], discardPoints = []; list.length < this._opts.disableHardcoreWhenPointsNumBelow && (hardcoreWidth = hardcoreHeight = 0); for (var i = 0, len = list.length; i < len; i++) { var x = list[i].x, y = list[i].y; !0 === this._tryOccupyArea(list[i], [x + pointOffset[0], y + pointOffset[1], width, height], [x + pointHardcoreOffset[0], y + pointHardcoreOffset[1], hardcoreWidth, hardcoreHeight]) ? leftPoints.push(list[i]) : discardPoints.push(list[i]) } return { leftPoints: leftPoints, discardPoints: discardPoints } }, _renderPoints: function (tag, sureInViewPoints, notSureInViewPoints, viewBounds, scaleFactor) { var i, len, p, pSize = this.getPointSize(), pWidth = pSize.width, pHeight = pSize.height, pHalfWidth = pWidth / 2, pHalfHeight = pHeight / 2, points = sureInViewPoints; for (i = 0, len = notSureInViewPoints.length; i < len; i++)p = notSureInViewPoints[i], boundsIntersect(viewBounds, { x: p.x - pHalfWidth, y: p.y - pHalfHeight, width: pWidth, height: pHeight }) && points.push(p); if (notSureInViewPoints.length = 0, len = points.length) { this._leftNumFunnel.setLeftNum("inMapViewBounds", len); var renderFunc = this["render" + tag], itemsForRenderList = []; for (points.sort(this._itemCompare), i = 0; i < len; i++)p = points[i], itemsForRenderList.push(new PointForRender((p.x - viewBounds.x) / scaleFactor, (p.y - viewBounds.y) / scaleFactor, p.idx, p.name, p.lng, p.lat, p.item)); var filterResult = this._filterPointsForRender(itemsForRenderList); itemsForRenderList.length = 0, this.curleftPoints.length = 0, this.curExtentPoints.length = 0; var leftPoints = filterResult.leftPoints, discardPoints = filterResult.discardPoints; this._leftNumFunnel.setLeftNum("hardcoreSpaceCheck", leftPoints.length), this.curleftPoints = leftPoints, this.curExtentPoints = points, discardPoints.length = 0 } }, curleftPoints: [], curExtentPoints: [] });

return {
  "utils": utils,
  "RBushItem": RBushItem,
  "RBU": RBU,
  "RBush": RBush,
  "AreaForRender": AreaForRender,
  "LeftNumFunnel": LeftNumFunnel,
  "quickselect": quickselect,
  "SphericalMercator": SphericalMercator,
  "PointItem": PointItem,
  "PointForRender": PointForRender,
  "BoundsItem": BoundsItem,
  "QuadTree": QuadTree,
  "Node": Node,
  "PointSimplifier": PointSimplifier,
  "BaseRender": BaseRender
}